<?php
/**
 * 短信接口类
 */
class Mobile_sns{

    // 用户名
    private $uid = 'cf_zanechang';

    // 密码
    private $pass = '13165740685za';

    // 手机号码
    private $mobile;

    // 错误信息列表
    private $error_list = array(); 

    public $error;

    // 构造函数
    public function __construct($arr){
        $this->mobile  = $arr['mobile'];
        // 判断是否为手机号码
        $mode  ='/^1[0-9]{10,10}$/';     // 手机号码匹配
        if(preg_match($mode,$this->mobile,$arr)){
           return $this->mobile;
        }
    }

    /**
     * 随机验证字符串构造方法
     */ 
    public function create_char()
    {
        // 数字
        for($i=1;$i<=6;$i++){
            $char_auth[]=rand(0,9);
        }
        // 将数组重新排序
        shuffle($char_auth);
        return $str_char=implode('',$char_auth);
    }

    /**
     * [error_list 错误信息列表]
     * @param  [type] $number [description]
     * @return [type]         [description]
     */
    public function error_list($number){
        $error_list = array(
            '0'     => '提交失败',
            '400'   => '非法ip访问',
            '401'   => '账号不能为空',
            '4010'  => '通道限制：每个号码1分钟内只能发1条',
            '402'   => '密码不能为空',
            '403'   => '手机号码不能为空',
            '4030'  => '手机号码已被列入黑名单',
            '404'   => '短信内容不能为空',
            '405'   => '用户名或密码不正确',
            '4050'  => '账号被冻结',
            '406'   => '手机格式不正确',
            '407'   => '短信内容含有敏感字符',
            '4070'  => '签名格式不正确',
            '408'   => '同一手机号码一分钟之内发送频率超过10条，系统将冻结你的帐号',
            '4080'  => '同一手机号码同一秒钟不能超过2条',
            '4081'  => '同一手机号码一分钟之内发送频率超不能超过1条',
            '4082'  => '同一手机号码一天之内发送频率超不能超过5条',
            '4083'  => '同内容每分钟限制：1条',
            '4084'  => '同内容每日限制：5条',
            '4085'  => '同一手机号码验证码短信发送量超出5条',
            '4086'  => '提交失败，同一个手机号码发送频率太频繁'
        );
        return $error_list[''.$number.''];
    }
    /**
     *   利用短信接口，发送验证码 
     */
    public function yzm($smsText){
        $url = "http://106.ihuyi.cn/webservice/sms.php?method=Submit&account=$this->uid&password=$this->pass&mobile=$this->mobile&content=$smsText";
        function Get($url){
            if(function_exists('file_get_contents')){
                $file_contents = file_get_contents($url);
            }else{
                $ch      = curl_init();
                $timeout = 5;
                curl_setopt ($ch, CURLOPT_URL, $url);
                curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
                $file_contents = curl_exec($ch);
                curl_close($ch);
            }
            return $file_contents;
        }
        $num   = Get($url);
        $reg   = $this->getxml($num);

        if($reg == 2){ // 发送成功
            return 'ok';
        }
        if($reg != 2){  // 发送失败
           return $this->error = $this->error_list($reg);
        }
     }
    
    /**
     * [getxml 处理xml]
     * @return [type] [description]
     */
    public function getxml($xml){
    /* 第一种方法    $res  = @simplexml_load_string($xml,NULL,LIBXML_NOCDATA);
        return  json_decode(json_encode($res),true);*/ //转换数组
        $xml = simplexml_load_string($xml);
        return  $xml->code;
    }


}
